home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 2.toast / pc / sample code / quicktime / quicktime for java / imageproducing / src / imageproducing.java next >
Encoding:
Java Source  |  2000-09-28  |  3.1 KB  |  118 lines

  1. /*
  2.  * QuickTime for Java SDK Sample Code
  3.  
  4.    Usage subject to restrictions in SDK License Agreement
  5.  * Copyright: © 1996-1999 Apple Computer, Inc.
  6.  
  7.  */
  8. import java.awt.*;
  9. import java.awt.image.*;
  10. import java.awt.event.*;
  11. import java.io.*;
  12.  
  13. import quicktime.qd.*;
  14. import quicktime.*;
  15. import quicktime.std.StdQTConstants;
  16. import quicktime.std.image.GraphicsImporter;
  17. import quicktime.std.movies.*;
  18. import quicktime.io.*;
  19. import quicktime.util.*;
  20.  
  21. import quicktime.app.QTFactory;
  22. import quicktime.app.display.*;
  23. import quicktime.app.image.*;
  24. import quicktime.app.players.MoviePlayer;
  25. import quicktime.util.*;
  26. import quicktime.std.image.GraphicsMode;
  27. import javax.swing.*;
  28.  
  29. import ip.*;
  30.  
  31. /** Uses a user canvas to draw the image that is produced by the QTImageProducer
  32.  * from a MoviePlayer as the source of the image
  33.  */
  34. public class ImageProducing extends JFrame implements MovieDrawingComplete, QDConstants, StdQTConstants {        
  35.     public static void main (String args[]) {
  36.         try {
  37.             QTSession.open();
  38.             QTFile f1 = new QTFile (QTFactory.findAbsolutePath ("jumps.mov").getPath());            
  39.             ImageProducing pm = new ImageProducing (f1);
  40.             pm.pack();
  41.             pm.show();
  42.             pm.toFront();
  43.         } catch (Exception e) {
  44.             e.printStackTrace();
  45.             QTSession.close();
  46.         }
  47.     }
  48.     
  49.     ImageProducing (QTFile movFile) throws QTException {
  50.         super ("Consumer");
  51.  
  52.         OpenMovieFile openMovieFile = OpenMovieFile.asRead(movFile);
  53.         Movie m = Movie.fromFile (openMovieFile);
  54.         m.getTimeBase().setFlags (loopTimeBase);
  55.         MoviePlayer moviePlayer = new MoviePlayer (m);
  56.         QDRect r = moviePlayer.getDisplayBounds();
  57.         Dimension d = new Dimension (r.getWidth(), r.getHeight());
  58.         ip = new QTImageProducer (moviePlayer, d);
  59.  
  60.             //this tells us that the movie has redrawn and 
  61.             //we use this to redraw the QTImageProducer - which will 
  62.             //supply more pixel data to its registered consumers
  63.         m.setDrawingCompleteProc (movieDrawingCallWhenChanged, this);
  64.  
  65.         JPanel pan = new JPanel (new BorderLayout());
  66.         getContentPane().add ("Center", pan);
  67.         pan.add ("South", new ControlPanel (moviePlayer));
  68.  
  69.         IPJComponent canv = new IPJComponent (d, ip);
  70.         pan.add("Center", canv);
  71.                             
  72.         addWindowListener(new WindowAdapter () {
  73.             public void windowClosing (WindowEvent e) {
  74.                 QTSession.close();
  75.                 dispose();
  76.             }
  77.             public void windowClosed (WindowEvent e) { 
  78.                 System.exit(0);
  79.             }
  80.         });
  81.     }    
  82.  
  83.     QTImageProducer ip;
  84.  
  85.     public int execute (Movie m) {
  86.         try {
  87.             ip.updateConsumers (null);
  88.         } catch (QTException e) {
  89.             return e.errorCode();
  90.         }
  91.         return 0;
  92.     }
  93.  
  94.     static class IPJComponent extends JComponent {
  95.         IPJComponent (Dimension prefSize, QTImageProducer ip) {
  96.             pSize = prefSize;
  97.             im = createImage (ip);
  98.             prepareImage (im, this);
  99.         }
  100.         
  101.         private Dimension pSize;
  102.         private Image im;
  103.         
  104.         public Dimension getPreferredSize() {
  105.             return pSize;
  106.         }
  107.  
  108.         public void paint (Graphics g) {
  109.             g.drawImage (im, 0, 0, pSize.width, pSize.height, this);
  110.         }
  111.         // stops flicker as we have no background color to erase
  112.         public void update (Graphics g) {
  113.             paint (g);
  114.         }
  115.     }
  116. }
  117.  
  118.